import axios from "axios";
import {
  ElLoading
} from 'element-plus'
const instance = axios.create({
  baseURL: "/api",
  timeout: 1000,
});

let loadingStatus=false
const openFullScreen2 = (loding) => {
  if (loding == true) {
    const loading = ElLoading.service({
      lock: true,
      text: 'Loading',
      background: 'rgba(0, 0, 0, 1)',
    })
    setTimeout(() => {
      loading.close()
    }, 1000)
  }else{
    console.log('000');
  }
}
instance.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    openFullScreen2(loadingStatus = true)

    const token = sessionStorage.getItem("token");
    if (token) {
      config.headers["Authorization"] = token;
    }
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    openFullScreen2(loadingStatus)
    return Promise.reject(error)
  }
);

// 添加响应拦截器
instance.interceptors.response.use(
  function (response) {
    // 对响应数据做点什么
    openFullScreen2(loadingStatus)
    return response;
  },
  function (error) {
    // 对响应错误做点什么
    openFullScreen2(loadingStatus)
    switch (error.response.status === 200) {
      case 401:
        sessionStorage.removeItem("token");
        window.location.href = "/login";
        break;
      case 404:
        // 未找到，可以通知用户或尝试恢复  
        console.error("404 Not Found:", error.response.data);
        // 在前端应用中，可能会显示一个友好的错误页面或消息  
        break;
      case 500:
      case 502:
        // 服务器错误，可能需要记录日志或通知用户稍后重试  
        console.error("Server Error:", error.response.status, error.response.data);
        // 可以在这里实现一个重试机制或显示一个错误消息  
        break;
        // 可以添加更多状态码的处理...  
      default:
        // 对于未明确处理的错误状态码，记录或抛出错误  
        console.error("Unexpected Error:", error.response.status, error.response.data);
    }
    return Promise.reject(error);
  }
);

export default instance;